package com.tangcco.lockwell.repository;

import com.tangcco.lockwell.domain.ExamPaper;
import com.tangcco.lockwell.domain.other.KeyValue;
import com.tangcco.lockwell.viewmodel.admin.exam.ExamPaperPageRequestVM;
import com.tangcco.lockwell.viewmodel.student.dashboard.PaperFilter;
import com.tangcco.lockwell.viewmodel.student.dashboard.PaperInfo;
import com.tangcco.lockwell.viewmodel.student.exam.ExamPaperPageVM;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface ExamPaperMapper extends BaseMapper<ExamPaper>{
    //根据前端选择的试卷相关的数据来查找试卷（动态条件）
    List<ExamPaper> page(ExamPaperPageRequestVM requestVM);
    //根据前端选择的试卷相关的数据来查找试卷（全部条件）
    List<ExamPaper> taskExamPage(ExamPaperPageRequestVM requestVM);
    //学生端根据前端选择的试卷相关的数据来查找试卷（动态条件）
    List<ExamPaper> studentPage(ExamPaperPageVM requestVM);
    //调取最近五周周考的考试试卷
    List<PaperInfo> indexPaper(PaperFilter paperFilter);
    //查找所有未被逻辑删除的试卷的数量，包括真题卷，测试卷，以及其他类型的试卷
    Integer selectAllCount();
    //统计在规定考试时间内胶卷数量
    List<KeyValue> selectCountByDate(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
    //将哪几张试卷发布到某次的考试任务中
    int updateTaskPaper(@Param("taskId") Integer taskId,@Param("paperIds") List<Integer> paperIds);
    //将某次考试任务中的试卷从任务中拿出去
    int clearTaskPaper(@Param("paperIds") List<Integer> paperIds);

    /**
     * 按条件查询通用
     * @param examPaper
     * @return
     */
    List<ExamPaper> selectList(ExamPaper examPaper);
}
